<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        /* 如何创建对象?
            1.字面量 
            不能批量创建 只能一个个的创建 
            const b1 = {}
            b1.name = '张三';
            b1.age = 18;
            b1.eat = ()=>{};
            b1.jump = ()=>{};
            const b2 = {}
            b2.name = '李四';
            b2.age = 20;
            b2.eat = ()=>{};
            b2.jump = ()=>{};
        

            2.内置构造函数 
            不能批量创建 只能一个个的创建 
            const b3 = new Object();
            b3.name = '王五';
            b3.age = 21;
            b3.eat = ()=>{};
            b3.jump = ()=>{};

            const b4 = new Object();
            b4.name = '赵六';
            b4.age = 22;
            b4.eat = ()=>{};
            b4.jump = ()=>{};


            
        
        */

        // 工厂函数  

        // 让一个函数的返回值 是个对象 
        function createPerson(name,age,fn){
            const obj = {};
            obj.name = name
            obj.age = age
            obj.eat = fn;

            return obj;
        }
        // console.log(createPerson('张三',18,()=>{console.log('正在吃面');}));
        // console.log( createPerson('李四',21,()=>{console.log('正在吃黄焖鸡');}));
        // console.log(createPerson('王五',28,()=>{console.log('正在和羊汤');}));


        // 可以批量创建对象  

        // 构造函数  
        // 实际上就是个函数  

        function createPerson2(name,age,fn){
            // 自动创建1个空对象 

            this.name = name; // this代表的是本次创建的对象
            this.age = age;
            this.eat = fn;
            // 自动返回创建的这个对象  
        }


       var obj1 =  new createPerson2('张三',18,()=>{console.log('正在吃鸡');});
       var obj2 = new createPerson2('李四',19,()=>{console.log('正在吃面包');});
       var obj3 = new createPerson2('王五',20,()=>{console.log('正在吃火锅');});

        console.log(obj1,obj2,obj3);


    </script>
</body>
</html>